package com.neusoft.service;

import com.neusoft.po.Wallet;
import com.neusoft.po.WalletTransaction;

import java.util.List;

public interface WalletService {

     /**
     * 根据用户ID获取钱包信息。
     *
     * @param userId 用户ID
     * @return 钱包对象
     */
    Wallet getWalletByUserId(String userId);

    /**
     * 充值功能，为用户钱包增加余额。如果用户没有钱包记录，则创建一个新的钱包。
     *
     * @param userId 用户ID
     * @param amount 充值金额
     * @return 操作是否成功
     */
    boolean recharge(String userId, Double amount);

    /**
     * 提现功能，为用户钱包扣除余额。余额不足时抛出异常。
     *
     * @param userId 用户ID
     * @param amount 提现金额
     * @return 操作是否成功
     */
    boolean withdraw(String userId, Double amount);

    /**
     * 用户之间的转账功能，从一个用户的钱包转账到另一个用户的钱包。
     *
     * @param fromUserId 转出方用户ID
     * @param toUserId 接收方用户ID
     * @param amount 转账金额
     * @return 操作是否成功
     */
    boolean transfer(String fromUserId, String toUserId, Double amount);

    /**
     * 获取用户的所有交易记录。
     *
     * @param userId 用户ID
     * @return 交易记录列表
     */
    List<WalletTransaction> getTransactionsByUserId(String userId);

    /**
     * 为用户创建一个初始余额为0的钱包。
     *
     * @param userId 用户ID
     */
    void createWallet(String userId);

    public boolean confirmReceipt(String toUserId, Double amount);

    public boolean updatedebt(String fromUserId);
}
